package com.bh.order.vo;

import com.bh.common.annotation.Excel;
import com.bh.extend.domain.JcAbnormal;
import com.bh.extend.domain.JcCustomer;
import com.bh.kysys.domain.JcSysOrganization;
import com.bh.ledger.domain.JcLedgerDetail;
import com.bh.ledger.vo.JcLedgerDetailVo;
import com.bh.order.domain.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单对象 jc_order
 *
 * @author slx
 * @date 2023-04-22
 */
@ApiModel("派送员获取订单VO")
@Data
public class JcDeliveryOrderVo implements Serializable {
    private static final long serialVersionUID = 1L;


    private Long id;
    //代码
    private String code;
    private Integer status = 1;

    /**
     * 回单份数
     */
    @Excel(name = "回单份数")
    private Integer backNumber;

    /**
     * 合同是否超期
     */
    @Excel(name = "合同是否超期")
    private Integer customerIsExceed;

    /**
     * 客户名称(零散客户)
     */
    @Excel(name = "客户名称(零散客户)")
    private String customerName;

    /**
     * 客户类型  0:零散，1:合同
     */
    @Excel(name = "客户类型  0:零散，1:合同")
    private Integer customerType;

    /**
     * 结算方式
     */
    @Excel(name = "结算方式")
    private Integer feeType;

    /**
     * 实际发运时间
     */
    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date fyTime;

    /**
     * 交付方式
     */
    @Excel(name = "交付方式")
    private Integer handoverType;

    /**
     * 是否有异常
     */
    @Excel(name = "是否有异常")
    private Integer isAbnormal;

    /**
     * 是否回单
     */
    @Excel(name = "是否回单")
    private Integer isBack;


    private Integer isBilling;

    /**
     * 件数
     */
    @Excel(name = "件数")
    private Integer number;

    /**
     * 订单公里数
     */
    @Excel(name = "订单公里数")
    private Double orderMileage;

    /**
     * 客户订单号1
     */
    @Excel(name = "客户订单号1")
    private String relateBill1;

    /**
     * 客户订单号2
     */
    @Excel(name = "客户订单号2")
    private String relateBill2;

    /**
     * 客户订单号3
     */
    @Excel(name = "客户订单号3")
    private String relateBill3;

    /**
     * 客户订单号4
     */
    @Excel(name = "客户订单号4")
    private String relateBill4;

    /**
     * 客户订单号5
     */
    @Excel(name = "客户订单号5")
    private String relateBill5;

    /**
     * 销售负责人
     */
    @Excel(name = "销售负责人")
    private String salePerson;

    /**
     * 运输方式
     */
    @Excel(name = "运输方式")
    private Integer shipmentMethod;

    /**
     * 订单日期
     */
    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "订单日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date time;


    private Integer transportPro;

    /**
     * 货值
     */
    @Excel(name = "货值")
    private BigDecimal value;

    /**
     * 体积
     */
    @Excel(name = "体积")
    private BigDecimal volume;

    /**
     * 重量
     */
    @Excel(name = "重量")
    private BigDecimal weight;

    /**
     * 核销时间
     */
    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "核销时间")
    private Date ydTime;

    /**
     * 客户
     */
    @Excel(name = "客户")
    private Long jcCustomerId;

    /**
     * 组织机构(出发网点)
     */
    @Excel(name = "组织机构(出发网点)")
    private Long jcOrganizationId;

    /**
     * 派车单
     */
    @Excel(name = "派车单")
    private Long jcDispatchId;

    /**
     * 实际到达时间
     */
    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "实际到达时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date factArriveTime;

    /**
     * 实际发运时间
     */
    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "实际发运时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date factLeaveTime;

    /**
     * 要求到达时间
     */
    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "要求到达时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date planArriveTime;

    /**
     * 要求发运时间
     */
    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "要求发运时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date planLeaveTime;

    /**
     * 起运站
     */
    @Excel(name = "起运站")
    private Long jcFromOrganizationId;

    /**
     * 目的站
     */
    @Excel(name = "目的站")
    private Long jcToOrganizationId;

    /**
     * 核销金额
     */
    @Excel(name = "核销金额")
    private BigDecimal hxMoney;

    /**
     * 核销类型
     */
    @Excel(name = "核销类型")
    private Integer hxType;

    /**
     * 未核销金额
     */
    @Excel(name = "未核销金额")
    private BigDecimal whxMoney;

    /**
     * 库分区
     */
    @Excel(name = "库分区")
    private Long jcZoneStoreroomId;

    /**
     * 目的运点
     */
    @Excel(name = "目的运点")
    private Long jcEndZoneId;

    /**
     * 出发运点
     */
    @Excel(name = "出发运点")
    private Long jcStartZoneId;

    /**
     * 是否有拆单(0否,1是)
     */
    @Excel(name = "是否有拆单(0否,1是)")
    private Integer isTake;

    /**
     * 代收货款
     */
    @Excel(name = "代收货款")
    private BigDecimal agent;

    /**
     * 签收时间
     */
    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "签收时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date qsTime;

    /**
     * 签收人
     */
    @Excel(name = "签收人")
    private String qsPerson;

    /**
     * 计重
     */
    @Excel(name = "计重")
    private BigDecimal jzWeight;

    /**
     * 计算方式
     */
    @Excel(name = "计算方式")
    private Integer jsType;

    /**
     * 单价
     */
    @Excel(name = "单价")
    private BigDecimal price;

    /**
     * 总金额
     */
    @Excel(name = "总金额")
    private BigDecimal zAmount;

    /**
     * 当前扫码生成的 LedId;
     */
    private Long currentLedId;
   
    private JcSysOrganization toOrganization;//目的网点
   
    private List<JcAbnormal> abnormals;//异常对象
   
    private JcOrderBack orderBack;//订单回单
   
    private JcCustomer customer; //客户
   
    private JcSysOrganization fromOrganization; //组织机构(出发网点)
   
    private List<JcOrderProduct> orderProducts;//货品
   
    private List<JcLed> leds;//分段订单

    private List<JcLedgerDetailVo> ledgers;//台账明细

    private List<JcOrderTrack> orderTracks;//追踪表
   
    private List<JcLedgerDetail> ledgerDetails;//台账明细

    private JcOrderReceivingParty fromParties; //所属发货方

    private JcOrderReceivingParty toParties; //所属收货方
}
